package me.mingshan.leetcode;

/**
 * https://leetcode.cn/problems/smallest-index-with-digit-sum-equal-to-index/description/
 *
 * 给你一个整数数组 nums 。
 *
 * 返回满足 nums[i] 的数位和（每一位数字相加求和）等于 i 的 最小 下标 i 。
 *
 * 如果不存在满足要求的下标，返回 -1 。
 *
 *
 *
 * 示例 1：
 *
 * 输入：nums = [1,3,2]
 *
 * 输出：2
 *
 * 解释：
 *
 * nums[2] = 2，其数位和等于 2 ，与其下标 i = 2 相等。因此，输出为 2 。
 * 示例 2：
 *
 * 输入：nums = [1,10,11]
 *
 * 输出：1
 *
 * 解释：
 *
 * nums[1] = 10，其数位和等于 1 + 0 = 1，与其下标 i = 1 相等。
 * nums[2] = 11，其数位和等于是 1 + 1 = 2，与其下标 i = 2 相等。
 * 由于下标 1 是满足要求的最小下标，输出为 1 。
 * 示例 3：
 *
 * 输入：nums = [1,2,3]
 *
 * 输出：-1
 *
 * 解释：
 *
 * 由于不存在满足要求的下标，输出为 -1 。
 *
 * @author hanjuntao
 * @date 2025/5/29 0029
 */
public class L_3550_smallest_index_with_digit_sum_equal_to_index {

    public static void main(String[] args) {
        int[] nums = {1, 3,2};
        System.out.println(smallestIndex(nums));

        int[] nums2 = {1,10,11};
        System.out.println(smallestIndex(nums2));

        smallestIndex2(123);

    }

    public static int smallestIndex(int[] nums) {
        if (nums == null || nums.length == 0) {
            return -1;
        }

        for (int i = 0; i < nums.length; i++) {
            int value = nums[i];

            int rSum = 0;
            while (value > 0) {
                int x  = value % 10;
                rSum += x;
                value  = value / 10;
            }

            if (rSum == i) {
                return i;
            }
        }

        return -1;
    }

    public static void smallestIndex2(int num) {
        while (num > 0) {
            int i  = num % 10;
            System.out.println(i);
            num  = num / 10;
        }
    }
}
